package com.hzh.cusviewdemo.Ui;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import android.view.Window;

import androidx.annotation.Nullable;

public class TestView extends View {

    private Paint paint = new Paint(); // 定义画笔
    // 宽高
    private int mWidth, mHeight;

    public TestView(Context context) {
        super(context);
        init();
    }

    public TestView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public TestView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    public void init() {
        // 设置画笔属性
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.STROKE); // 设置画笔模式
        paint.setStrokeWidth(10f); // 画笔宽度10PX
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mWidth = w;
        mHeight = h;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

//        canvas.drawColor(Color.BLUE); // 填充颜色
//        canvas.drawPoint(200, 200, paint);  // 绘制一个点
//        float[] points = {100, 100, 200, 200, 300, 300, 200, 400, 100, 500};
//        canvas.drawPoints(points, paint);  // 绘制一组点
//        canvas.drawLine(200,200,800,200, paint);  // 绘制直线
//        canvas.drawLines(new float[]{               // 绘制一组线 每四数字(两个点的坐标)确定一条线
//                100, 200, 200, 200,
//                100, 300, 200, 300
//        }, paint);
//        canvas.drawRect(100,100,800,400,paint); // 绘制矩形
//        canvas.drawRoundRect(100, 100, 900, 400, 30, 30, paint); // 绘制矩形
//        RectF rectF = new RectF(100, 100, 800, 400);
//        // 绘制背景矩形
//        paint.setColor(Color.GRAY);
//        canvas.drawRect(rectF, paint);
//        // 绘制圆角矩形
//        paint.setColor(Color.BLUE);
//        canvas.drawRoundRect(rectF, 700, 400, paint);
        // 绘制椭圆
//        RectF rectF = new RectF(100,100,800,400);
//        canvas.drawOval(rectF,paint);
//        canvas.drawCircle(500,500,400, paint);  // 绘制一个圆心坐标在(500,500)，半径为400 的圆。
//        RectF rectF = new RectF(100, 100, 800, 400);
//        // 绘制背景矩形
//        paint.setColor(Color.GRAY);
//        canvas.drawRect(rectF, paint);
//        // 绘制圆弧
//        paint.setColor(Color.BLUE);
//        canvas.drawArc(rectF, 0, 90, false, paint);
//        //-------------------------------------
//        RectF rectF2 = new RectF(100, 600, 800, 900);
//        // 绘制背景矩形
//        paint.setColor(Color.GRAY);
//        canvas.drawRect(rectF2, paint);
//        // 绘制圆弧
//        paint.setColor(Color.BLUE);
//        canvas.drawArc(rectF2, 0, 90, true, paint);
//        RectF rectF = new RectF(100,100,600,600);
//        // 绘制背景矩形
//        paint.setColor(Color.GRAY);
//        canvas.drawRect(rectF,paint);
//        // 绘制圆弧
//        paint.setColor(Color.BLUE);
//        canvas.drawArc(rectF,0,90,false,paint);
//        //-------------------------------------
//        RectF rectF2 = new RectF(100,700,600,1200);
//        // 绘制背景矩形
//        paint.setColor(Color.GRAY);
//        canvas.drawRect(rectF2,paint);
//        // 绘制圆弧
//        paint.setColor(Color.BLUE);
//        canvas.drawArc(rectF2,0,90,true,paint);
//        Paint paint = new Paint();
//        paint.setColor(Color.BLUE);
//        paint.setStrokeWidth(40);     //为了实验效果明显，特地设置描边宽度非常大
//        // 描边
//        paint.setStyle(Paint.Style.STROKE);
//        canvas.drawCircle(200,200,100,paint);
//        // 填充
//        paint.setStyle(Paint.Style.FILL);
//        canvas.drawCircle(200,500,100,paint);
//        // 描边加填充
//        paint.setStyle(Paint.Style.FILL_AND_STROKE);
//        canvas.drawCircle(200, 800, 100, paint);
        // 在坐标原点绘制一个黑色圆形
//        paint.setColor(Color.BLACK);
//        canvas.translate(200,200);  // 移动可叠加
//        canvas.drawCircle(0,0,100,paint);
//        // 在坐标原点绘制一个蓝色圆形
//        paint.setColor(Color.BLUE);
//        canvas.translate(200,200);  // 移动可叠加
//        canvas.drawCircle(0,0,100,paint);
        // 将坐标系原点移动到画布正中心
//        canvas.translate(mWidth / 2, mHeight / 2);
//        RectF rect = new RectF(0,-400,400,0);   // 矩形区域
//        paint.setColor(Color.BLACK);           // 绘制黑色矩形
//        canvas.drawRect(rect,paint);
//        canvas.scale(0.5f,0.5f);         // 画布缩放
//        paint.setColor(Color.BLUE);            // 绘制蓝色矩形
//        canvas.drawRect(rect,paint);
        // 将坐标系原点移动到画布正中心
//        canvas.translate(mWidth / 2, mHeight / 2);
//        RectF rect = new RectF(0, -400, 400, 0);   // 矩形区域
//        paint.setColor(Color.BLACK);           // 绘制黑色矩形
//        canvas.drawRect(rect, paint);
////        canvas.scale(0.5f, 0.5f, 200, -200);          // 画布缩放  <-- 缩放中心向右偏移了200个单位
//        paint.setColor(Color.WHITE);            // 绘制蓝色矩形
//        canvas.drawCircle(mWidth, mHeight, 200, paint);
        // 将坐标系原点移动到画布正中心
//        canvas.translate(mWidth / 2, mHeight / 2);
//        canvas.drawCircle(0, 0, 400, paint);          // 绘制两个圆形
//        paint.setColor(Color.WHITE);
//        canvas.drawCircle(0, 0, 50, paint);
//        for (int i = 0; i <= 360; i += 10) {               // 绘制圆形之间的连接线
//            canvas.drawLine(0, 50, 0, 400, paint);
//            canvas.rotate(10);
//        }
        // 文本(要绘制的内容)
//        String str = "ABCDEFGHIJK";
//        // 参数分别为 (文本 基线x 基线y 画笔)
//        canvas.drawText(str,200,500, paint);
//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心(宽高数据在onSizeChanged中获取)
//        Path path = new Path();                     // 创建Path
//        path.lineTo(200, 200);                      // lineTo
//        path.lineTo(200,0);
//        canvas.drawPath(path, paint);              // 绘制Path
//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        Path path = new Path();                     // 创建Path
//        path.lineTo(200, 200);                      // lineTo
//        path.moveTo(200,100);                       // moveTo
//        path.lineTo(200,0);                         // lineTo
//        canvas.drawPath(path, paint);              // 绘制Path

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        Path path = new Path();                     // 创建Path
//        path.lineTo(200, 200);                      // lineTo
//        path.setLastPoint(200,100);                 // setLastPoint
//        path.lineTo(200,0);                         // lineTo
//        canvas.drawPath(path, paint);              // 绘制Path

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        Path path = new Path();                     // 创建Path
//        path.lineTo(200, 200);                      // lineTo
//        path.lineTo(200,0);                         // lineTo
//        path.close();                               // close
//        canvas.drawPath(path, paint);              // 绘制Path

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        Path path = new Path();
//        path.addRect(-200, -200, 200, 200, Path.Direction.CW);  // CW 顺时针 ， CCW逆时针        canvas.drawPath(path, paint);

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        Path path = new Path();
//        path.addRect(-200,-200,200,200, Path.Direction.CW);
//        path.setLastPoint(-300,300);                // <-- 重置最后一个点的位置
//        canvas.drawPath(path, paint);

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        Path path = new Path();
//        path.addRect(-200,-200,200,200, Path.Direction.CCW);  // CCW 逆时针
//        path.setLastPoint(-300,300);                // <-- 重置最后一个点的位置
//        canvas.drawPath(path, paint);

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        canvas.scale(1,-1);                         // <-- 注意 翻转y坐标轴
//        Path path = new Path();
//        Path src = new Path();
//        path.addRect(-200,-200,200,200, Path.Direction.CW);
//        src.addCircle(0,0,100, Path.Direction.CW);
//        path.addPath(src,0,200);
//        paint.setColor(Color.BLACK);           // 绘制合并后的路径
//        canvas.drawPath(path,paint);

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        canvas.scale(1,-1);                         // <-- 注意 翻转y坐标轴
//        Path path = new Path();
//        path.lineTo(100,100);
//        RectF oval = new RectF(0,0,300,300);
//        path.addArc(oval,0,270);
//        // path.arcTo(oval,0,270,true);             // <-- 和上面一句作用等价
//        canvas.drawPath(path, paint);

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        canvas.scale(1, -1);                         // <-- 注意 翻转y坐标轴
//        Path path = new Path();
//        path.lineTo(100, 100);
//        RectF oval = new RectF(0, 0, 300, 300);
//        path.arcTo(oval, 0, 270);
//        // path.arcTo(oval,0,270,false);             // <-- 和上面一句作用等价
//        canvas.drawPath(path, paint);

//        canvas.translate(mWidth / 2, mHeight / 2);  // 移动坐标系到屏幕中心
//        canvas.scale(1,-1);                         // <-- 注意 翻转y坐标轴
//        Path path = new Path();                     // path中添加一个圆形(圆心在坐标原点)
//        path.addCircle(0,0,100, Path.Direction.CW);
//        Path dst = new Path();                      // dst中添加一个矩形
//        dst.addRect(-200,-200,200,200, Path.Direction.CW);
//        path.offset(300,0,dst);                     // 平移
//        canvas.drawPath(path,paint);               // 绘制path
//       paint.setColor(Color.BLUE);                // 更改画笔颜色
//        canvas.drawPath(dst,paint);                // 绘制dst


        //        au_pie = findViewById(R.id.au_pie);
//        ArrayList<PieData> datas = new ArrayList<>();
//        for (int i = 0; i < 8; i++) {
//            PieData data = new PieData("NAme", 20f);
//            data.setName("Name" + i);
//            data.setAngle(50f);
//            data.setColor(Color.BLUE);
//            data.setPercentage(30f);
//            data.setValue(20f);
//            datas.add(data);
//        }
//        au_pie.setData(datas);

    }
}
